package com.ruoyi.heima.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.heima.domain.dto.QueryNewsPageDto;
import com.ruoyi.heima.domain.po.News;


import java.time.LocalDate;
import java.util.List;

/**
 * 新闻管理Service接口
 *
 * @author yangjianlin
 * @date 2025-02-10
 */
public interface INewsService extends IService<News> {
    /**
     * 查询新闻管理
     *
     * @param newsId 新闻管理主键
     * @return 新闻管理
     */
    public News selectNewsByNewsId(Long newsId);

    /**
     * 查询新闻管理列表
     *
     * @param queryNewsPageDto 新闻管理
     * @return 新闻管理集合
     */
    public List<News> selectNewsList(QueryNewsPageDto queryNewsPageDto);

    /**
     * 新增新闻管理
     *
     * @param news 新闻管理
     * @return 结果
     */
    public int insertNews(News news);

    /**
     * 修改新闻管理
     *
     * @param news 新闻管理
     * @return 结果
     */
    public Boolean updateNews(News news);

    // 删除来自通知公告的新闻
    Boolean deleteNewsFromNotice(Long[] noticeIds);
    /**
     * 批量删除新闻管理
     *
     * @param newsIds 需要删除的新闻管理主键集合
     * @return 结果
     */
    public Boolean deleteNewsByNewsIds(Long[] newsIds);

    /**
     * 删除新闻管理信息
     *
     * @param newsId 新闻管理主键
     * @return 结果
     */
    public Boolean deleteNewsByNewsId(Long newsId);

    /*
     * 推送新闻
     */
    void pushNews(List<Long> newsIds);

    /**
     * 根据通知公告id查询新闻
     * @param noticeId
     * @return
     */
    News selectNewsByNoticeId(Long noticeId);

//    List<NewsPojo> getNewsList(List<Long> newsIds);

    /**
     * 查询全部新闻
     * @return
     */
    List<News> selectAllNewList();

    /**
     * 删除一周前更新并状态为删除的新闻
     */
    void deletedOneWeekAgoNews();

    /**
     * 根据id批量查询新闻
     * @param ids
     * @return
     */
    List<News> selectNewsByIdsCache(List<Long> ids);
}
